#pragma once

#include <stdint.h>

struct ListaChaveSecundariaNome;
struct ListaChavePrimaria;
struct ListaInvertida;
struct ChavePrimaria;
struct ChaveSecundaria;
struct ElementoListaInvertida;

typedef struct ChavePrimaria{
  uint64_t inscricao;
  uint64_t byteOffset;
}ChavePrimaria;

typedef struct ChaveSecundaria{
  char *nomeOuCurso;
  struct ElementoListaInvertida *ref;  
}ChaveSecundaria;

typedef struct ListaChaveSecundariaNome{
  ChaveSecundaria chaveSecundaria;	
  struct ListaChaveSecundariaNome *proximo; 
}ListaChaveSecundariaNome;

typedef struct ListaChavePrimaria{
  ChavePrimaria chavePrimaria;
  struct ListaChavePrimaria *proximo; 
}ListaChavePrimaria;

typedef struct ElementoListaInvertida{
  uint64_t inscricao;
  struct ElementoListaInvertida *proxNome;
  //struct ElementoListaInvertida *proxCurso;
}ElementoListaInvertida;

typedef struct ListaInvertida{
  ElementoListaInvertida elemento;
  struct ListaInvertida *proximo;  
}ListaInvertida;